//package org.chs.ts.batch.util;
//
//import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
//import com.baomidou.mybatisplus.core.toolkit.StringUtils;
//import lombok.extern.slf4j.Slf4j;
//import org.springframework.stereotype.Component;
//
//import javax.annotation.Resource;
//import java.math.BigDecimal;
//import java.text.SimpleDateFormat;
//import java.util.ArrayList;
//import java.util.HashMap;
//import java.util.List;
//import java.util.Map;
//
///**
// * @Compay 盛唐天行
// * @Author: wuwei
// * @Censor By wuwei
// * @Sence 2023/2/24 16:23
// * @Modify 2023/2/24 16:23
// * @Description 跑批平台有关 外部系统调用 方法集合
// * 1、跑批任务-调账对账 操作 主要操作包括核心和统一支付账务系统的查询、补记账、冲正
// */
//@Component
//@Slf4j
//public class TradeCapitalBuilder {
//
//    private final String reversalReason = "中间系统跑批自动调用";
//
//
//    @Resource
//    private IRouterApi iTransApi;
//
//    @Resource
//    private ParameterUtil parameterUtil;
//
//    @Resource
//    private TaskBuilder taskBuilder;
//
//    @Resource
//    private IMwbpAcctRecordInfoDetailService acctRecordInfoDetailService;
//
//
//    @Resource(name = "BatchTradeCapitalTransLogService")
//    private IMwbpTradeCapitalTransLogService tradeCapitalTransLogService;
//
//
//    @Resource(name = "BatchTradeLogServiceImpl")
//    private IMwbpTradeLogService tradeLogService;
//
//
//    @Resource
//    private IMwbpTradeCorrectLogService tradeCorrectLogService;
//
//
//    @Resource
//    private IMwbpTradeCapitalCheckErrorService tradeCapitalCheckErrorService;
//
//    @Resource
//    private IMwbpTradeCapitalCheckErrorLogService pmcsTradeCapitalCheckErrorLogService;
//
//
//    @Resource
//    private TempTokenUtil tempTokenUtil;
//
//
//    /**
//     * @param tradeCapitalCheckError 资金交易对账差错表
//     * @param optType                查询:query 任意字符串参考  tradeCapitalCheckError tradeCapitalCheckError.getErrOptType() 判断为补记账操作还是冲正操作
//     * @return 执行结果 包括 retCd:RetCode.FAILED/RetCode.SUCCESS/RetCode.ERR_TIME_OUT  msg:执行信息
//     */
//    public Map<String, String> getTradeCapitalOpt(MwbpTradeCapitalCheckError tradeCapitalCheckError, String optType) {
//        String channelType = tradeCapitalCheckError.getChannelType();
//        String errOptType = tradeCapitalCheckError.getErrOptType();
//        if (optType.equals("query")) {
//            return channelType.equals(EnumUtil.资金交易对账差错表_账务系统类型_核心) ? queryTranStatusFromCore(tradeCapitalCheckError) :
//                    queryPayStatus(tradeCapitalCheckError);
//        } else {
//            // 统一支付 所有冲正 均使用 退款接口
//            if (errOptType.equals(EnumUtil.资金交易对账差错表_差错处理类型_冲正)) {
//                return channelType.equals(EnumUtil.资金交易对账差错表_账务系统类型_核心) ? submitCoreCorrect(tradeCapitalCheckError) :
//                        returnPay(tradeCapitalCheckError);
//            }
//            if (errOptType.equals(EnumUtil.资金交易对账差错表_差错处理类型_补记账)) {
//                return channelType.equals(EnumUtil.资金交易对账差错表_账务系统类型_核心) ? commonKeepAccount(tradeCapitalCheckError) :
//                        returnPay(tradeCapitalCheckError);
//            }
//        }
//        return new HashMap<String, String>() {{
//            put("retCd", RetCode.FAILED);
//            put("msg", "TradeCapitalBuilder -> getTradeCapitalOpt(optType: " + optType + ") 未获取有效操作！");
//        }};
//    }
//
//
//    /**
//     * 30011000012 01 核心通用记账
//     *
//     * @param tradeCapitalCheckError 资金交易对账差错表
//     * @return 调用账务系统反馈结果
//     * @Description 执行逻辑说明
//     * 1、调用 核心 通用记账接口 进行 补账操作,全局流水号、交易流水号 使用原交易资金流水 全局流水号、全新交易流水号(存入资金交易对账差错调账日志表pmcs_trade_capital_check_error_log.error_log_serno)。
//     * 2、将上送 tranDate 作为资金流水表交易时间[transDate+transTime]
//     * 3、hostBrId 机构Id 贵金属交易流水表[dept_id] 机构顺序号
//     * 4、hostTlrNo 柜员号 贵金属交易流水表[user_id] 操作员号
//     */
//    private Map<String, String> commonKeepAccount(MwbpTradeCapitalCheckError tradeCapitalCheckError) {
//
//        EsbCoreCommonKeepAccountsRequest esbCoreCommonKeepAccountsRequest = new EsbCoreCommonKeepAccountsRequest();
//        // esbCoreCommonKeepAccountsRequest 设置 请求body
//        // 会计分录对象
//        List<MwbpAcctRecordInfoDetail> pmcsAcctRecordInfoDetails = initAcctRecordInfoDetails(tradeCapitalCheckError);
//        // 资金流水对象
//        MwbpTradeCapitalTransLog tradeCapitalTransLog =
//                tradeCapitalTransLogService.getOne(new LambdaQueryWrapper<MwbpTradeCapitalTransLog>().eq(MwbpTradeCapitalTransLog::getCapitalCode,
//                        tradeCapitalCheckError.getCapitalCode()));
//        // 交易流水表对象
//        MwbpTradeLog tradeLogObj = tradeLogService.getOne(new LambdaQueryWrapper<MwbpTradeLog>().eq(MwbpTradeLog::getChannelSeqNo,
//                tradeCapitalTransLog.getChannelSeqNo()));
//
//        ArrayList<EsbCoreCommonKeepAccountsRequest.SubOrdr> bkkpInfArrays = new ArrayList<>();
//
//        pmcsAcctRecordInfoDetails.forEach(item -> {
//            EsbCoreCommonKeepAccountsRequest.SubOrdr bkkpInf = new EsbCoreCommonKeepAccountsRequest.SubOrdr();
//            bkkpInf.setBranch(tradeCapitalTransLog.getSysOrgCode()); //机构*/  //sys_org_code-所属部门
//            bkkpInf.setTranBranch(tradeCapitalTransLog.getTransBranchCode());//交易机构*/ //trans_branch_code-交易机构号
//            bkkpInf.setBaseAcctNo(tradeCapitalTransLog.getPayAcctNo());//账户账号/卡号*/ //pay_acct_no
//            bkkpInf.setNarrative(item.getNarrative());//摘要*/
//            bkkpInf.setSystemId(ChannelId.MWBP);//系统ID*/
//            bkkpInf.setTranAmt(item.getTransAmt());//交易金额*/
//            bkkpInf.setCcy(item.getCur());//币种*/
//            bkkpInf.setTranCcy(item.getCur()); // 交易币种
//            bkkpInf.setAccountingStatus(item.getAccountState());//核算状态*/
//            bkkpInf.setSourceModule("RB");//源模块*/
//            //交易类型根据交易场景上送 你要是转账的话   借方上送 4186 DEBT  贷方上送4189 CRET
//            bkkpInf.setEventType(item.getEventType());//事件类型*/
//            bkkpInf.setTranType(item.getTransType());//交易类型*/
//            bkkpInf.setTranDate(CommonUtil.getFullDateTime(tradeCapitalTransLog.getTransDate()));//交易日期*/
//            bkkpInf.setOthBaseAcctNo(tradeCapitalTransLog.getProcAcctNo());//对方账户号码*/
//            bkkpInfArrays.add(bkkpInf);
//        });
//        esbCoreCommonKeepAccountsRequest.setBkkpInfArray(bkkpInfArrays);
//
//        // DoPayForShoppingCatService -> doPay
//        // esbRequest 全局流水号 使用 资金流水全局流水号 tradeCapitalTransLog.getGlobalSeqNo()
//        // esbRequest tlrNo 柜员号  贵金属交易流水表    pmcs_trade_log user_id-操作员号 tradeLogObj.getUserId()
//        // esbRequest brId	机构Id  贵金属交易流水表    pmcs_trade_log dept_id-机构顺序号 tradeLogObj.getDeptId()
//        String transSerno = RequestBuilder.transSerNo();
//        CommonRequestHead esbCoreCorrectBuilder = RequestBuilder.builderSettle(tradeCapitalTransLog.getGlobalSeqNo(), tradeLogObj.getUserId(),
//                tradeLogObj.getDeptId(), transSerno);
//        esbCoreCommonKeepAccountsRequest.setCommonRequestHead(esbCoreCorrectBuilder);
//
//        // 数据持久化 资金冲正流水表 	pmcs_trade_correct_log
//        MwbpTradeCorrectLog tradeCorrectLog = insertTrandeCorrectLogAndUpdateTradeCapitalTransLog(tradeLogObj.getUserId(), tradeLogObj.getDeptId(),
//                tradeCapitalTransLog, esbCoreCorrectBuilder);
//
//        EsbCoreCommonKeepAccountsResponse esbCoreCommonKeepAccountsResponse = null;
//        Map<String, String> responseRetCdAndMsg;
//        try {
//
//            UserTokenContext.setToken(tempTokenUtil.getTempToken());
//            esbCoreCommonKeepAccountsResponse = iTransApi.batchCommonKeepAccount(esbCoreCommonKeepAccountsRequest);
//            responseRetCdAndMsg = getResponseRetCdAndMsg(esbCoreCommonKeepAccountsResponse);
//
//        } catch (Exception e) {
//            //e.printStackTrace();
//            responseRetCdAndMsg = createResponseRetCdAndMsg(RetCode.FAILED, "batchCommonKeepAccount 执行异常" + e.getMessage());
//        } finally {
//            UserTokenContext.remove();
//        }
//
//
//        // 插入 资金交易对账差错调账日志表	 pmcs_trade_capital_check_error_log
//        createTradeCapitalCheckErrorLog(tradeCapitalCheckError, esbCoreCommonKeepAccountsRequest.getCommonRequestHead(), responseRetCdAndMsg);
//        // 更新资金流水
//        tradeCapitalTransLog.setCapitalResponseSeqNo(esbCoreCommonKeepAccountsRequest.getCommonRequestHead().getTransSerNo());//交易返回流水号
//        tradeCapitalTransLog.setCapitalResponseCode(responseRetCdAndMsg.get("retCd"));//交易返回交易码
//        tradeCapitalTransLog.setCapitalResponseMsg(responseRetCdAndMsg.get("msg"));//交易返回信息
//        tradeCapitalTransLog.setChannelSeqNo(esbCoreCommonKeepAccountsRequest.getCommonRequestHead().getChannelSeqNo());//原请求发交易流水
//        tradeCapitalTransLog.setChkStatus(EnumUtil.资金交易流水表_对账状态_未对账);
//        tradeCapitalTransLog.setCapitalStatus(getCapitalStatusByHostRetCd(responseRetCdAndMsg.get("retCd"), tradeCapitalCheckError.getErrOptType()));
//        //tradeCapitalTransLog.setTransTime(new SimpleDateFormat("HHmmss").format(esbCoreCommonKeepAccountsRequest.getCommonRequestHead().getDate()));
//
//        tradeCapitalTransLogService.updateById(tradeCapitalTransLog);
//
//        // 更新差错流水 如果 retCd[0] 成功化 更新 deal_status-差错状态 为 1 线上处理
//        if (RetCode.SUCCESS.equals(responseRetCdAndMsg.get("retCd"))) {
//            tradeCapitalCheckError.setDealStatus(EnumUtil.资金交易对账差错表_差错状态_人工线上处理);
//            tradeCapitalCheckErrorService.updateById(tradeCapitalCheckError);
//        }
//
//        // 更新 资金冲正流水
//        tradeCorrectLog.setHostDate(taskBuilder.getCurentDay());//冲正系统业务日期
//        tradeCorrectLog.setHostTime(DateUtils.nowTime());//冲正系统业务时间
//        tradeCorrectLog.setHostSerno(esbCoreCommonKeepAccountsResponse != null ? esbCoreCommonKeepAccountsResponse.getReference() : null);//冲正系统返回流水号
//        tradeCorrectLog.setHostReturnCode(getReturnCode(esbCoreCommonKeepAccountsResponse));//冲正系统返回码
//        tradeCorrectLog.setHostReturnMsg(getReturnMsg(esbCoreCommonKeepAccountsResponse));//冲正系统返回信息
//
//        tradeCorrectLogService.updateById(tradeCorrectLog);
//        return responseRetCdAndMsg;
//
//    }
//
//    private List<MwbpAcctRecordInfoDetail> initAcctRecordInfoDetails(MwbpTradeCapitalCheckError tradeCapitalCheckError) {
//        return acctRecordInfoDetailService.list(new LambdaQueryWrapper<MwbpAcctRecordInfoDetail>().eq(MwbpAcctRecordInfoDetail::getCapitalCode,
//                tradeCapitalCheckError.getCapitalCode()));
//    }
//
//    //todo-wuwei:待定
//
//    /**
//     * 30014000001 05 核心冲正接口
//     *
//     * @return 调用账务系统反馈结果
//     * @Description 执行逻辑说明
//     * 1、使用差错信息 作为 发起方 提供全局流水号 交易流水号
//     */
//    private Map<String, String> submitCoreCorrect(MwbpTradeCapitalCheckError tradeCapitalCheckError) {
//
//        EsbCoreCorrectRequest esbCoreCorrectRequest = new EsbCoreCorrectRequest();
//        // esbCoreQueryTranStatusRequest 设置 请求body
//        // 会计分录对象
//        //List<PmcsAcctRecordInfoDetail> pmcsAcctRecordInfoDetails = acctRecordInfoDetailService.list(new
//        // LambdaQueryWrapper<PmcsAcctRecordInfoDetail>().eq(PmcsAcctRecordInfoDetail::getCapitalSerno, tradeCapitalCheckError.getCapitalSerno()));
//        // 资金流水对象
//        MwbpTradeCapitalTransLog tradeCapitalTransLog =
//                tradeCapitalTransLogService.getOne(new LambdaQueryWrapper<MwbpTradeCapitalTransLog>().eq(MwbpTradeCapitalTransLog::getCapitalCode,
//                        tradeCapitalCheckError.getCapitalCode()));
//        // 交易流水表对象
//        MwbpTradeLog tradeLogObj = tradeLogService.getOne(new LambdaQueryWrapper<MwbpTradeLog>().eq(MwbpTradeLog::getChannelSeqNo,
//                tradeCapitalTransLog.getChannelSeqNo()));
//
//        // 渠道流水号 : 使用差错流水号
//        esbCoreCorrectRequest.setChannelSeqNo(tradeCapitalCheckError.getGlobalSeqNo());
//        // 交易(核心)参考号  : 使用差错流水号 //CBS152204130000000060347   tradeCapitalCheckError.getTransSerno()
//        //esbCoreCorrectRequest.setReference("CBS152204130000000060347");
//
//        // 冲正原因
//        esbCoreCorrectRequest.setReversalReason(reversalReason);
//        // 0 自动冲正 1人工冲正
//        esbCoreCorrectRequest.setAutoReversalFlag("0");
//        esbCoreCorrectRequest.setWipeAccount("N");
//        // 交易子流水 - 使用原交易流水
//        esbCoreCorrectRequest.setSubSeqNo(tradeCapitalTransLog.getTransSeqNo());
//
//
//        //DoCorrectService -> doCorrect
//        // esbRequest 全局流水号 使用 资金流水全局流水号 tradeCapitalTransLog.getGlobalSeqNo()
//        // esbRequest tlrNo 柜员号  贵金属交易流水表    pmcs_trade_log user_id-操作员号 tradeLogObj.getUserId()
//        // esbRequest brId	机构Id  贵金属交易流水表    pmcs_trade_log dept_id-机构顺序号 tradeLogObj.getDeptId()
//        String transSerno = RequestBuilder.transSerNo();
//        CommonRequestHead esbCoreCorrectBuilder = RequestBuilder.builderSettle(tradeCapitalCheckError.getErrorSerno(), tradeLogObj.getUserId(),
//                tradeLogObj.getDeptId(), transSerno);
//        esbCoreCorrectRequest.setCommonRequestHead(esbCoreCorrectBuilder);
//
//        // 数据持久化 资金冲正流水表 	pmcs_trade_correct_log
//        MwbpTradeCorrectLog pmcsTradeCorrectLog = insertTrandeCorrectLogAndUpdateTradeCapitalTransLog(tradeLogObj.getUserId(),
//                tradeLogObj.getDeptId(), tradeCapitalTransLog, esbCoreCorrectBuilder);
//
//        EsbCoreCorrectResponse esbCoreCorrectResponse = null;
//
//        Map<String, String> responseRetCdAndMsg;
//
//        try {
//
//            UserTokenContext.setToken(tempTokenUtil.getTempToken());
//
//            esbCoreCorrectResponse = iTransApi.batchSubmitCoreCorrect(esbCoreCorrectRequest);
//            responseRetCdAndMsg = getResponseRetCdAndMsg(esbCoreCorrectResponse);
//
//        } catch (Exception e) {
//            //e.printStackTrace();
//            responseRetCdAndMsg = createResponseRetCdAndMsg(RetCode.FAILED, "batchSubmitCoreCorrect 执行异常" + e.getMessage());
//        } finally {
//            UserTokenContext.remove();
//        }
//
//        // 插入 资金交易对账差错调账日志表	 pmcs_trade_capital_check_error_log
//        createTradeCapitalCheckErrorLog(tradeCapitalCheckError, esbCoreCorrectRequest.getCommonRequestHead(), responseRetCdAndMsg);
//
//        // 更新资金流水
//        tradeCapitalTransLog.setCapitalResponseSeqNo(esbCoreCorrectRequest.getCommonRequestHead().getTransSerNo());//交易返回流水号
//        tradeCapitalTransLog.setCapitalResponseCode(responseRetCdAndMsg.get("retCd"));//交易返回交易码
//        tradeCapitalTransLog.setCapitalResponseMsg(responseRetCdAndMsg.get("msg"));//交易返回信息
//        tradeCapitalTransLog.setChannelSeqNo(esbCoreCorrectRequest.getCommonRequestHead().getChannelSeqNo());//原请求发交易流水
//        tradeCapitalTransLog.setChkStatus(EnumUtil.资金交易流水表_对账状态_未对账);
//        tradeCapitalTransLog.setCapitalStatus(getCapitalStatusByHostRetCd(responseRetCdAndMsg.get("retCd"), tradeCapitalCheckError.getErrOptType()));
//        //tradeCapitalTransLog.setTransTime(new SimpleDateFormat("yyyyMMddHHmmss").format(esbCoreCorrectRequest.getCommonRequestHead().getDate()));
//
//        tradeCapitalTransLogService.updateById(tradeCapitalTransLog);
//
//        // 更新差错流水 如果 retCd[0] 成功化 更新 deal_status-差错状态 为 1 线上处理
//        if (RetCode.SUCCESS.equals(responseRetCdAndMsg.get("retCd"))) {
//            tradeCapitalCheckError.setDealStatus(EnumUtil.资金交易对账差错表_差错状态_人工线上处理);
//            tradeCapitalCheckErrorService.updateById(tradeCapitalCheckError);
//        }
//
//        // 更新 资金冲正流水
//        pmcsTradeCorrectLog.setHostDate(esbCoreCorrectResponse != null ? esbCoreCorrectResponse.getCoreDt() : null);//冲正系统业务日期
//        pmcsTradeCorrectLog.setHostTime(DateUtils.nowTime());//冲正系统业务时间
//        pmcsTradeCorrectLog.setHostSerno(esbCoreCorrectResponse != null ? esbCoreCorrectResponse.getReference() : null);//冲正系统返回流水号
//        pmcsTradeCorrectLog.setHostReturnCode(getReturnCode(esbCoreCorrectResponse));//冲正系统返回码
//        pmcsTradeCorrectLog.setHostReturnMsg(getReturnMsg(esbCoreCorrectResponse));//冲正系统返回信息
//
//        tradeCorrectLogService.updateById(pmcsTradeCorrectLog);
//
//
//        return responseRetCdAndMsg;
//
//    }
//
//
//    private String getReturnCode(EsbCoreCorrectResponse esbCoreCorrectResponse) {
//        if (esbCoreCorrectResponse == null || esbCoreCorrectResponse.getCommonResponseHead() == null) {
//            return "返回报文头为空";
//        }
//        return esbCoreCorrectResponse.getCommonResponseHead().getReturnCode();
//    }
//
//    private String getReturnCode(ESBCommonResponse payP04PM001Response) {
//        if (payP04PM001Response == null || payP04PM001Response.getCommonResponseHead() == null) {
//            return "返回报文头为空";
//        }
//        return payP04PM001Response.getCommonResponseHead().getReturnCode();
//    }
//
//
//    private String getReturnMsg(ESBCommonResponse esbCoreCorrectResponse) {
//        if (esbCoreCorrectResponse == null || esbCoreCorrectResponse.getCommonResponseHead() == null) {
//            return "返回报文头为空";
//        }
//        return esbCoreCorrectResponse.getCommonResponseHead().getReturnMsg();
//    }
//
//
//    /**
//     * 3001300000816 核心 - 账户交易信息查询
//     *
//     * @return 查账response
//     */
//    private Map<String, String> queryTranStatusFromCore(MwbpTradeCapitalCheckError tradeCapitalCheckError) {
//        EsbCoreQueryStatusRequest esbCoreQueryTranStatusRequest = new EsbCoreQueryStatusRequest();
//        // 资金流水对象
//        List<MwbpTradeCapitalTransLog> tradeCapitalTransLogList =
//                tradeCapitalTransLogService.list(new LambdaQueryWrapper<MwbpTradeCapitalTransLog>().eq(MwbpTradeCapitalTransLog::getCapitalCode,
//                        tradeCapitalCheckError.getCapitalCode()));
//
//        MwbpTradeCapitalTransLog tradeCapitalTransLog = tradeCapitalTransLogList.size() == 1 ? tradeCapitalTransLogList.get(0) : null;
//        String retCd = "";
//        String msg = "";
//        EsbCoreQueryStatusResponse esbCoreQueryTranStatusResponse = null;
//
//        if (!(tradeCapitalTransLog == null)) {
//            // esbCoreQueryTranStatusRequest 设置 请求body
//            // transLog.getGlobalSeqNo(), transLog.getTransSerno()
//            // 业务渠道类型/类别 N
//            //渠道类型-011701
//            String channelType = "011701";
//            esbCoreQueryTranStatusRequest.setChannelType(channelType);
//
//            // 渠道流水号 Y
//            esbCoreQueryTranStatusRequest.setChannelSeqNo(tradeCapitalTransLog.getGlobalSeqNo());
//            // 交易子流水号 Y = 交易流水(取资金表返回的交易流水)
//            esbCoreQueryTranStatusRequest.setSubSeqNo(tradeCapitalTransLog.getTransSeqNo());
//            // 原服务消费方请求日期2 N
//            esbCoreQueryTranStatusRequest.setChannelTranDate(CommonUtil.getYYYYMMdd(tradeCapitalTransLog.getTransDate()));
//            // TrsApiProcessTransAbnormal9007ServiceImpl queryCoreTranStatus
//            // esbRequest tlrNo 柜员号  parameterUtil.getParameterByCode("hostTlrNo")
//            // esbRequest brId	机构Id  parameterUtil.getParameterByCode("hostBrId")
//            esbCoreQueryTranStatusRequest.setCommonRequestHead(RequestBuilder.builder(tradeCapitalTransLog.getGlobalSeqNo(),
//                    parameterUtil.getParameterByCode("hostTlrNo"), parameterUtil.getParameterByCode("hostBrId")));
//
//
//            try {
//
//                UserTokenContext.setToken(tempTokenUtil.getTempToken());
//                esbCoreQueryTranStatusResponse = iTransApi.batchQueryStatusFromCore(esbCoreQueryTranStatusRequest);
//                retCd = esbCoreQueryTranStatusResponse.getCommonResponseHead().getReturnCode();
//                msg = esbCoreQueryTranStatusResponse.getCommonResponseHead().getReturnMsg();
//
//            } catch (Exception e) {
//                //e.printStackTrace();
//                retCd = RetCode.FAILED;
//                msg = "batchQueryTranStatusFromCore 执行异常" + e.getMessage();
//            } finally {
//                UserTokenContext.remove();
//            }
//        }
//        Map<String, String> returnResult = createResponseRetCdAndMsg(retCd, msg);
//
//        // 查询成功
//        // acctResult 取值 S成功, R冲正 E异常 N不存在
//        // acctResult 取值 S成功, R冲正 E异常 N不存在
//        String acctResult = "E";
//        // 核心特殊识别码 标记为 未查询到交易记录
//        if (RetCode.CORE_SUCC_SPECIAL_CODE.equals(retCd)) {
//            acctResult = "N";
//        } else if (RetCode.SUCCESS.equals(retCd)) {
//            acctResult = esbCoreQueryTranStatusResponse.getAcctResult();
//        }
//        returnResult.put("acctResult", acctResult);
//        return returnResult;
//
//    }
//
//    /**
//     * 30041000001 04 混合支付退款 UPP10082
//     */
//    private Map<String, String> returnPay(MwbpTradeCapitalCheckError tradeCapitalCheckError) {
//        PayP04PM001Request payP04PM001Request = new PayP04PM001Request();
//        // 资金流水对象
//        // todo-wuwei:待业务成型 需要 重新评估
//        MwbpTradeCapitalTransLog tradeCapitalTransLog =
//                tradeCapitalTransLogService.getOne(new LambdaQueryWrapper<MwbpTradeCapitalTransLog>().eq(MwbpTradeCapitalTransLog::getCapitalCode,
//                        tradeCapitalCheckError.getCapitalCode()));
//        MwbpTradeCapitalTransLog tradeCapitalTransLogOld =
//                tradeCapitalTransLogService.getOne(new LambdaQueryWrapper<MwbpTradeCapitalTransLog>().eq(MwbpTradeCapitalTransLog::getTransSeqNo,
//                        tradeCapitalTransLog.getTransSeqNo()).ne(MwbpTradeCapitalTransLog::getCapitalCode, tradeCapitalCheckError.getCapitalCode()));
//
//        // 交易流水表对象
//        MwbpTradeLog tradeLogObj = tradeLogService.getOne(new LambdaQueryWrapper<MwbpTradeLog>().eq(MwbpTradeLog::getChannelSeqNo,
//                tradeCapitalTransLog.getChannelSeqNo()));
//        // 客户订单表
//        //List<PmcsTradeOrderinfo> pmcsTradeOrderinfoList = pmcsTradeOrderinfoService.list(new LambdaQueryWrapper<PmcsTradeOrderinfo>().eq
//        // (PmcsTradeOrderinfo::getTransSerno, tradeCapitalTransLog.getTransSerno()).eq(PmcsTradeOrderinfo::getCompanyCode, tradeCapitalTransLog
//        // .getCompanyCode()));
//        //退唐豆数量*/
//        String sndBackTdCnt = "0";
//        //退款金额  trans_amt-交易金额 + equity_amt-权益抵扣金额 */
//        BigDecimal rfndAmt = tradeCapitalTransLog.getTransAmt().add(tradeCapitalTransLog.getEquityAmt());
//        //BigDecimal rfndAmt = new BigDecimal(0);
////        for (PmcsTradeOrderinfo pmcsTradeOrderinfo : pmcsTradeOrderinfoList) {
////            sndBackTdCnt += pmcsTradeOrderinfo.getBeanNum();
////            rfndAmt=rfndAmt.add(pmcsTradeOrderinfo.getTransAmt());
////        }
//
//        // 设置 请求body
//        // 交易类型
//        payP04PM001Request.setTranType("P04PM001");
//        // 机构标志
//        payP04PM001Request.setBrFlg("800");
//        // 原订单编号
//        payP04PM001Request.setOrgnlOrdrId(tradeCapitalTransLogOld.getCapitalCode());
//        // 订单编号
//        payP04PM001Request.setOrdrId(tradeCapitalTransLog.getCapitalCode());
//        // 卡券编号
//        // payP04PM001Request.setCrdCpnId();
//        // 卡券面值
//        // payP04PM001Request.setCrdCpnFaceWrth();
//        // 退唐豆数量
//        payP04PM001Request.setSndBackTdCnt(sndBackTdCnt);
//        // 退款金额
//        payP04PM001Request.setRfndAmt(rfndAmt.toString());
//
//        payP04PM001Request.setGlAcctNo(tradeCapitalTransLog.getProcAcctNo());
//        // 退款描述
//        payP04PM001Request.setEntrTp(reversalReason);
//        // 付款账号子账号序号
//        payP04PM001Request.setPymtSubSeqNo("0");
//        // 时间戳
//        payP04PM001Request.setTimeStamp(DateUtils.timestampToStr());
//        // 交易日期1
//        payP04PM001Request.setTranDt1(CommonUtil.getYYYYMMdd(tradeCapitalTransLog.getTransDate()));
//        // 交易时间1
//        payP04PM001Request.setTranTm1(CommonUtil.getHHmmss(tradeCapitalTransLog.getTransDate()));
//        // 商户名称
//        // todo-wuwei:实际测试时待确认
//        payP04PM001Request.setMerchAntName(tradeCapitalTransLog.getCompanyCustCode());
//        // 所属法人
//        payP04PM001Request.setCompany(tradeCapitalTransLog.getCompanyCustCode());
//        // 订单币种
//        payP04PM001Request.setOrdrCcy(tradeCapitalTransLog.getCur());
//        // 机构
//        payP04PM001Request.setBranch(tradeCapitalTransLog.getTransBranchCode());
//        // 交易机构
//        payP04PM001Request.setTranBranch(tradeCapitalTransLog.getTransBranchCode());
//        // 收款方账户
//        payP04PM001Request.setBaseAcctNo(tradeCapitalTransLog.getProcAcctNo());
//        // 退款现金金额
//        payP04PM001Request.setRfndCashAmt(tradeCapitalTransLog.getTransAmt().toString());
//        // 中间业务平台还未配置
//        payP04PM001Request.setMtrNo(ParamWordbook.MWBP);
//
//
//        // esbRequest 全局流水号 使用 资金流水全局流水号 tradeCapitalTransLog.getGlobalSeqNo()
//        // esbRequest tlrNo 柜员号  贵金属交易流水表    pmcs_trade_log user_id-操作员号 tradeLogObj.getUserId()
//        // esbRequest brId	机构Id  贵金属交易流水表    pmcs_trade_log dept_id-机构顺序号 tradeLogObj.getDeptId()
//        String transSerno = RequestBuilder.transSerNo();
//        CommonRequestHead esbPayCorrectBuilder = RequestBuilder.builderSettle(tradeCapitalTransLog.getGlobalSeqNo(), tradeLogObj.getUserId(),
//                tradeLogObj.getDeptId(), transSerno);
//        payP04PM001Request.setCommonRequestHead(esbPayCorrectBuilder);
//
//        // 数据持久化 资金冲正流水表 	pmcs_trade_correct_log
//        MwbpTradeCorrectLog tradeCorrectLog = insertTrandeCorrectLogAndUpdateTradeCapitalTransLog(tradeLogObj.getUserId(),
//                tradeLogObj.getDeptId(), tradeCapitalTransLog, esbPayCorrectBuilder);
//
//        Map<String, String> responseRetCdAndMsg;
//        PayP04PM001Response payP04PM001Response = null;
//        try {
//
//            UserTokenContext.setToken(tempTokenUtil.getTempToken());
//            payP04PM001Response = iTransApi.batchReturnPay(payP04PM001Request);
//            responseRetCdAndMsg = getResponseRetCdAndMsg(payP04PM001Response);
//        } catch (Exception e) {
//            //e.printStackTrace();
//            responseRetCdAndMsg = createResponseRetCdAndMsg(RetCode.FAILED, "batchReturnPay 执行异常 " + e.getMessage());
//        } finally {
//            UserTokenContext.remove();
//        }
//
//        // 插入 资金交易对账差错调账日志表	 pmcs_trade_capital_check_error_log
//        createTradeCapitalCheckErrorLog(tradeCapitalCheckError, payP04PM001Request.getCommonRequestHead(), responseRetCdAndMsg);
//
//        // 更新资金流水
//        tradeCapitalTransLog.setCapitalResponseSeqNo(payP04PM001Request.getCommonRequestHead().getTransSerNo());//交易返回流水号
//        tradeCapitalTransLog.setCapitalResponseCode(responseRetCdAndMsg.get("retCd"));//交易返回交易码
//        tradeCapitalTransLog.setThirdCapitalResponseMsg(responseRetCdAndMsg.get("msg"));//交易返回信息
//        tradeCapitalTransLog.setChannelSeqNo(payP04PM001Request.getCommonRequestHead().getChannelSeqNo());//原请求发交易流水
//        tradeCapitalTransLog.setChkStatus(EnumUtil.资金交易流水表_对账状态_未对账);
//        tradeCapitalTransLog.setCapitalStatus(getCapitalStatusByHostRetCd(responseRetCdAndMsg.get("retCd"), tradeCapitalCheckError.getErrOptType()));
//        //tradeCapitalTransLog.settr(new SimpleDateFormat("HHmmss").format(payP04PM001Request.getCommonRequestHead().getDate()));
//
//        tradeCapitalTransLogService.updateById(tradeCapitalTransLog);
//
//        // 更新差错流水 如果 retCd[0] 成功化 更新 deal_status-差错状态 为 1 线上处理
//        if (RetCode.SUCCESS.equals(responseRetCdAndMsg.get("retCd"))) {
//            tradeCapitalCheckError.setDealStatus(EnumUtil.资金交易对账差错表_差错状态_人工线上处理);
//            tradeCapitalCheckErrorService.updateById(tradeCapitalCheckError);
//        }
//
//        // 更新 资金冲正流水
//        tradeCorrectLog.setHostDate(payP04PM001Response != null ? payP04PM001Response.getRfndInfStruct().getTranDt1() : null);//冲正系统业务日期
//        tradeCorrectLog.setHostTime(DateUtils.nowTime());//冲正系统业务时间
//        tradeCorrectLog.setHostSerno(payP04PM001Response != null ? payP04PM001Response.getRfndInfStruct().getOrdrId() : null);//冲正系统返回流水号
//        tradeCorrectLog.setHostReturnCode(getReturnCode(payP04PM001Response));//冲正系统返回码
//        tradeCorrectLog.setHostReturnMsg(getReturnMsg(payP04PM001Response));//冲正系统返回信息
//
//        tradeCorrectLogService.updateById(tradeCorrectLog);
//
//        return responseRetCdAndMsg;
//
//
//    }
//
//
//    /**
//     * 30043000015 25 混合支付订单状态查询
//     * [作废]针对 统一支付 隔日冲正调用 退费接口 故 调整 针对 统一支付 冲正查询逻辑 。增加 查询 已退款的的订单状态 wuwei@20230426 此流程变更
//     *
//     * @return response
//     */
//    private Map<String, String> queryPayStatus(MwbpTradeCapitalCheckError tradeCapitalCheckError) {
//
//        String retCd;
//        String msg;
//        PayT02PM003Response payT02PM003Response = queryPayStatus(tradeCapitalCheckError.getCapitalCode());
//        if (payT02PM003Response == null) {
//            retCd = RetCode.FAILED;
//            msg = "batchQueryPayStatus 执行异常！";
//        } else {
//            retCd = payT02PM003Response.getCommonResponseHead().getReturnCode();
//            msg = payT02PM003Response.getCommonResponseHead().getReturnMsg();
//        }
//
//
//        Map<String, String> returnResult = new HashMap<>();
//        returnResult.put("retCd", retCd);
//        returnResult.put("msg", msg);
//
//
//        // 查询
//        // 业务背景 :
//        //  1、针对部分退款 支付资金流水交易额 与 退款资金流水额度不一致
//        //  2、针对查询业务 不存在交易记录 及 异常 没有区分出来
//        //  3、
//        // acctResult 取值 S成功, R冲正 E异常 N不存在
//        // tranSt : 1-交易成功 2-已冲销
//        // bsnSt  : 10-已撤销 20-已冲正 30-已全额退货 31-已部分退货 60-已退汇
//        // acctResult 取值 S成功, R冲正 E异常 N不存在
//        if (RetCode.SUCCESS.equals(retCd)) {
//            List<PayT02PM003StructResponse> ordrInfStruct = payT02PM003Response.getOrdrInfStruct();
//            String acctResult = transformQueryPayStatus(ordrInfStruct);
//            returnResult.put("acctResult", acctResult);
//        } else {
//            returnResult.put("acctResult", "E");
//
//        }
//
//        return returnResult;
//
//    }
//
//    /**
//     * 转换 统一支付 查询 代码 前序条件 查询正常返回
//     *
//     * @param ordrInfStruct 返回结果集
//     * @return acctResult 取值 S成功, R冲正 N不存在
//     */
//    private String transformQueryPayStatus(List<PayT02PM003StructResponse> ordrInfStruct) {
//        String acctResult = "";
//        // tranSt : 1-交易成功 2-已冲销
//        String tranSt = ordrInfStruct.get(0).getTranSt();
//        // bsnSt  : 10-已撤销 20-已冲正 30-已全额退货 31-已部分退货 60-已退汇
//        String bsnSt = ordrInfStruct.get(0).getBsnSt();
//        // tranAmt : 交易金额
//        String tranAmt = ordrInfStruct.get(0).getTranAmt();
//
//        // 交易金额为空 tranSt为 2-已冲销
//        if (StringUtils.isBlank(tranAmt) && tranSt.equals("2")) {
//            acctResult = "N";
//        }
//        // tranSt : 1-交易成功   bsnSt  : 00 处理
//        if (tranSt.equals("1") && bsnSt.equals("00")) {
//            acctResult = "S";
//        }
//
//        // tranSt : 1-交易成功   bsnSt  : 00 处理
//        if (tranSt.equals("1") && bsnSt.equals("30")) {
//            acctResult = "R";
//        }
//
//        return acctResult;
//    }
//
//
//    private PayT02PM003Response queryPayStatus(String capitalSerno) {
//        PayT02PM003Request payT02PM003Request = new PayT02PM003Request();
//        // payT02PM003Request 设置 请求body
//        // 交易类型 Y
//        payT02PM003Request.setTranType("T02PM003");
//        // 机构标志 Y
//        payT02PM003Request.setBrFlg("800");
//        // 订单号 -- 使用资金流水编码
//        // 01172023032408595890046296320002
//        // capitalSerno
//        payT02PM003Request.setOrdrId(capitalSerno);
//
//        // esbRequest 全局流水号 使用 资金流水全局流水号 tradeCapitalTransLog.getGlobalSeqNo()
//        // esbRequest tlrNo 柜员号  parameterUtil.getParameterByCode("hostTlrNo")
//        // esbRequest brId	机构Id  parameterUtil.getParameterByCode("hostBrId")
//        payT02PM003Request.setCommonRequestHead(RequestBuilder.builder(capitalSerno, parameterUtil.getParameterByCode("hostTlrNo"),
//                parameterUtil.getParameterByCode("hostBrId")));
//
//        PayT02PM003Response payT02PM003Response = null;
//
//        try {
//            //
//            UserTokenContext.setToken(tempTokenUtil.getTempToken());
//            payT02PM003Response = iTransApi.batchQueryPayStatus(payT02PM003Request);
//
//
//        } catch (Exception e) {
//            //e.printStackTrace();
//            log.error(e.getMessage());
//
//        } finally {
//            UserTokenContext.remove();
//        }
//
//        return payT02PM003Response;
//    }
//
//
//    /**
//     * 创建 资金交易对账差错调账日志表
//     *
//     * @param tradeCapitalCheckError 资金交易对账差错表
//     * @param commonRequestHead      esb通用请求时间头
//     */
//    private void createTradeCapitalCheckErrorLog(MwbpTradeCapitalCheckError tradeCapitalCheckError, CommonRequestHead commonRequestHead, Map<String
//            , String> responseRetCdAndMsg) {
//        MwbpTradeCapitalCheckErrorLog result = new MwbpTradeCapitalCheckErrorLog();
//
//        result.setErrorLogSerno(commonRequestHead.getTransSerNo());//差错调账日志流水号。存储为发送请求的交易流水号
//        result.setErrorSerno(tradeCapitalCheckError.getErrorSerno());//差错流水号
//        result.setCapitalCode(tradeCapitalCheckError.getCapitalCode());//原资金流水号
//        result.setTransSeqNo(tradeCapitalCheckError.getTransSeqNo());//原交易流水号
//        result.setErrorResponseSeqNo(commonRequestHead.getTransSerNo());//交易返回流水号
//        result.setErrorResponseCode(responseRetCdAndMsg.get("retCd"));//交易返回交易码
//        result.setErrorResponseMsg(responseRetCdAndMsg.get("msg"));//交易返回信息
//        result.setCapitalStatus(getCapitalStatusByHostRetCd(responseRetCdAndMsg.get("retCd"), tradeCapitalCheckError.getErrOptType()));
//        //资金处理状态金额处理状态1付款成功，2付款失败，3冲正成功，4冲正失败, 5记账成功，6记账失败
//        result.setChannelType(tradeCapitalCheckError.getChannelType());//业务系统渠道类型(1核心，2统一支付)
//        result.setTransTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(commonRequestHead.getDate()));//交易时间
//        result.setErrOptType(tradeCapitalCheckError.getErrOptType());//差错处理类型：0冲正 1补记账
//
//        pmcsTradeCapitalCheckErrorLogService.save(result);
//
//    }
//
//    /**
//     * 异常情况 本地生成 返回结果
//     *
//     * @param retCd 返回码
//     * @param msg   返回信息
//     * @return 返回结果集
//     */
//    private Map<String, String> createResponseRetCdAndMsg(String retCd, String msg) {
//        Map<String, String> returnMap = new HashMap<>();
//        returnMap.put("retCd", retCd);
//        returnMap.put("msg", msg);
//        return returnMap;
//    }
//
//    /**
//     * 根据 请求返回 获取返回码及返回信息
//     *
//     * @param esbCommonResponse esb通用事件头
//     * @return 返回 esb通用事件头 执行结果
//     */
//    private Map<String, String> getResponseRetCdAndMsg(ESBCommonResponse<?> esbCommonResponse) {
//        Map<String, String> returnMap = new HashMap<>();
//        String[] retCd = {""};
//        String[] msg = {""};
//        // 根据返回接口 更新 资金流水
//        if (!Util.isNullOrEmpty(esbCommonResponse.getSysHead())) {
//            if (!Util.isNullOrEmpty(esbCommonResponse.getSysHead().getRetInfArray())) {
//                esbCommonResponse.getSysHead().getRetInfArray().forEach(temp1 -> {
//                    retCd[0] = temp1.getRetCd();
//                    msg[0] = temp1.getRetMsg();
//                });
//            }
//        } else {
//            retCd[0] = esbCommonResponse.getCommonResponseHead().getReturnCode();
//            msg[0] = esbCommonResponse.getCommonResponseHead().getReturnMsg();
//        }
//        returnMap.put("retCd", retCd[0]);
//        returnMap.put("msg", msg[0]);
//        return returnMap;
//    }
//
//    /**
//     * 根据 核心返回码 获取 资金流水表 状态
//     *
//     * @param retCd      核心返回码
//     * @param errOptType 交易类型 交易类型：1支付（入库），2撤单（撤销入库）
//     * @return 客户资金交易流水表_资金流水状态
//     */
//    private String getCapitalStatusByHostRetCd(String retCd, String errOptType) {
//        if (RetCode.SUCCESS.equals(retCd) && EnumUtil.资金交易对账差错表_差错处理类型_冲正.equals(errOptType)) {
//            return EnumUtil.资金交易流水表_资金流水状态_冲正成功;
//        }
//
//        if (RetCode.SUCCESS.equals(retCd) && EnumUtil.资金交易对账差错表_差错处理类型_补记账.equals(errOptType)) {
//            return EnumUtil.资金交易流水表_资金流水状态_记账成功;
//        }
//
//        if (RetCode.ERR_TIME_OUT.equals(retCd) && EnumUtil.资金交易对账差错表_差错处理类型_冲正.equals(errOptType)) {
//            return EnumUtil.资金交易流水表_资金流水状态_冲正超时;
//        }
//
//        if (RetCode.ERR_TIME_OUT.equals(retCd) && EnumUtil.资金交易对账差错表_差错处理类型_补记账.equals(errOptType)) {
//            return EnumUtil.资金交易流水表_资金流水状态_记账超时;
//        }
//
//        if (RetCode.FAILED.equals(retCd) && EnumUtil.资金交易对账差错表_差错处理类型_冲正.equals(errOptType)) {
//            return EnumUtil.资金交易流水表_资金流水状态_冲正失败;
//        }
//
//        if (RetCode.FAILED.equals(retCd) && EnumUtil.资金交易对账差错表_差错处理类型_补记账.equals(errOptType)) {
//            return EnumUtil.资金交易流水表_资金流水状态_记账失败;
//        }
//
//        return retCd;
//    }
//
//
//
//    /**
//     * 创建 资金冲正流水表[pmcs_trade_correct_log] 更新客户资金交易流水表[pmcs_trade_capital_trans_log]
//     *
//     * @param tlrNo                柜员号
//     * @param brId                 机构Id
//     * @param tradeCapitalTransLog 客户资金交易流水表[pmcs_trade_capital_trans_log]
//     * @return 资金冲正流水表
//     */
//    private MwbpTradeCorrectLog insertTrandeCorrectLogAndUpdateTradeCapitalTransLog(String tlrNo, String brId,
//                                                                                    MwbpTradeCapitalTransLog tradeCapitalTransLog,
//                                                                                    CommonRequestHead esbCoreCorrectBuilder) {
//        MwbpTradeCorrectLog correctLog = new MwbpTradeCorrectLog();
//        correctLog.setCreateBy(tlrNo);
//        correctLog.setSysOrgCode(brId);//所属部门
//        correctLog.setCorrectSerno(esbCoreCorrectBuilder.getTransSerNo());//冲正流水号
//        // 资金流水号
//        correctLog.setCapitalCode(tradeCapitalTransLog.getCapitalCode());//原资金流水号
//        //中间业务 业务日期调整
//        correctLog.setCorrectDate(taskBuilder.getCurentDay());//冲正日期-中间业务系统业务期
//        correctLog.setCorrectTime(DateUtils.nowTime());//冲正时间
//        correctLog.setCorrectSysType(tradeCapitalTransLog.getChannelType());//冲正系统：1核心，2统一支付
//        // 中间业务适配 去除 资金和库存类
//        //correctLog.setCorrectType(tradeCapitalTransLog.getTransClassify());//冲正类型：1资金，2库存
//
//        tradeCorrectLogService.save(correctLog);
//
//        return correctLog;
//    }
//
//}
